package req

// SettingWebsiteReq 保存网站信息参数
type SettingWebsiteReq struct {
	Name     string `form:"name"`     // 网站名称
	Logo     string `form:"logo"`     // 网站图标
	Favicon  string `form:"favicon"`  // 网站LOGO
	Backdrop string `form:"backdrop"` // 登录页广告图
	ShopName string `form:"shopName"` // 商城名称
	ShopLogo string `form:"shopLogo"` // 商城Logo
}

// SettingCopyrightItemReq 保存备案信息参数
type SettingCopyrightItemReq struct {
	Name string `form:"name" json:"name"`  // 名称
	Link string `form:"link"  json:"link"` // 链接
}

// SettingProtocolItem 政策通用参数
type SettingProtocolItem struct {
	Name    string `form:"name" json:"name"`        // 名称
	Content string `form:"content"  json:"content"` // 内容
}

// SettingProtocolReq 保存政策信息参数
type SettingProtocolReq struct {
	Service SettingProtocolItem `form:"service" json:"service"`  // 服务协议
	Privacy SettingProtocolItem `form:"privacy"  json:"privacy"` // 隐私协议
}

// SettingStorageDetailReq 存储详情参数
type SettingStorageDetailReq struct {
	Engine string `form:"engine" binding:"required,oneof=local qiniu qcloud aliyun"` // 别名: [local,qiniu,qcloud,aliyun]
}

// SettingStorageEditReq 存储编辑参数
type SettingStorageEditReq struct {
	Engine    string `json:"engine" binding:"required,oneof=local qiniu qcloud aliyun"` // 别名: [local,qiniu,qcloud,aliyun]
	Name      string `json:"name" binding:"required"`                                   // 名称
	Describe  string `json:"describe" binding:"required"`                               // 描述
	Bucket    string `json:"bucket,omitempty"`                                          // 存储空间名
	Endpoint  string `json:"endpoint,omitempty"`
	SecretKey string `json:"secret_key,omitempty"` // SK
	AccessKey string `json:"access_key,omitempty"` // AK
	Domain    string `json:"domain,omitempty"`     // 访问域名
	Region    string `json:"region,omitempty"`     // 地区,腾讯存储特有
	Status    int32  `json:"status,omitempty"`     // 状态
}

// SettingStorageChangeReq 存储切换参数
type SettingStorageChangeReq struct {
	Alias  string `form:"alias" binding:"required,oneof=local qiniu qcloud aliyun"` // 别名: [local,qiniu,qcloud,aliyun]
	Status int    `form:"status" binding:"oneof=0 1"`                               // 状态: 0/1
}

// SettingDictTypeListReq 字典类型新增参数
type SettingDictTypeListReq struct {
	DictName   string `form:"dictName" binding:"max=200"`                   // 字典名称
	DictType   string `form:"dictType" binding:"max=200"`                   // 字典类型
	DictStatus int8   `form:"dictStatus,default=-1" binding:"oneof=-1 0 1"` // 字典状态: 0/1
}

// SettingDictTypeDetailReq 字典类型详情参数
type SettingDictTypeDetailReq struct {
	ID uint `form:"id" binding:"required,gt=0"` // 主键
}

// SettingDictTypeAddReq 字典类型新增参数
type SettingDictTypeAddReq struct {
	DictName   string `form:"dictName" binding:"required,max=200"`     // 字典名称
	DictType   string `form:"dictType" binding:"required,max=200"`     // 字典类型
	DictRemark string `form:"dictRemark" binding:"max=200"`            // 字典备注
	DictStatus int8   `form:"dictStatus" binding:"required,oneof=0 1"` // 字典状态: 0/1
}

// SettingDictTypeEditReq 字典类型编辑参数
type SettingDictTypeEditReq struct {
	ID         uint   `form:"id" binding:"required,gt=0"`              // 主键
	DictName   string `form:"dictName" binding:"required,max=200"`     // 字典名称
	DictType   string `form:"dictType" binding:"required,max=200"`     // 字典类型
	DictRemark string `form:"dictRemark" binding:"max=200"`            // 字典备注
	DictStatus int8   `form:"dictStatus" binding:"required,oneof=0 1"` // 字典状态: 0/1
}

// SettingDictTypeDelReq 字典类型删除参数
type SettingDictTypeDelReq struct {
	Ids []uint `form:"ids" binding:"required"` // 主键列表
}

// SettingDictDataListReq 字典数据列表参数
type SettingDictDataListReq struct {
	DictType string `form:"dictType" binding:"max=200"`               // 字典类型
	Name     string `form:"name" binding:"max=100"`                   // 键
	Value    string `form:"value" binding:"max=200"`                  // 值
	Status   int8   `form:"status,default=-1" binding:"oneof=-1 0 1"` // 状态: 0=停用,1=启用
}

// SettingDictDataDetailReq 字典数据详情参数
type SettingDictDataDetailReq struct {
	ID uint `form:"id" binding:"required,gt=0"` // 主键
}

// SettingDictDataAddReq 字典数据新增参数
type SettingDictDataAddReq struct {
	TypeId uint   `form:"typeId" binding:"required,gt=0"`           // 类型
	Name   string `form:"name" binding:"required,max=100"`          // 键
	Value  string `form:"value" binding:"required,max=200"`         // 值
	remark string `form:"remark" binding:"max=200"`                 // 备注
	Sort   int    `form:"sort" binding:"gte=0"`                     // 排序
	Status int8   `form:"status,default=-1" binding:"oneof=-1 0 1"` // 状态: 0=停用,1=启用
}

// SettingDictDataEditReq 字典数据编辑参数
type SettingDictDataEditReq struct {
	ID     uint   `form:"id" binding:"required,gt=0"`               // 主键
	TypeId uint   `form:"typeId" binding:"required,gte=0"`          // 类型
	Name   string `form:"name" binding:"required,max=100"`          // 键
	Value  string `form:"value" binding:"required,max=200"`         // 值
	remark string `form:"remark" binding:"max=200"`                 // 备注
	Sort   int    `form:"sort" binding:"gte=0"`                     // 排序
	Status int8   `form:"status,default=-1" binding:"oneof=-1 0 1"` // 状态: 0=停用,1=启用
}

// SettingDictDataDelReq 字典数据删除参数
type SettingDictDataDelReq struct {
	Ids []uint `form:"ids" binding:"required"` // 主键列表
}

// NoticeSettingListReq 通知列表
type NoticeSettingListReq struct {
	Recipient int32 `form:"recipient"` // 接收者 1-用户 2-平台
}

// NoticeSettingDetailReq 通知设置详情参数
type NoticeSettingDetailReq struct {
	Id int32 `form:"id" binding:"required,gt=0"` //
}

// NoticeSettingEditReq 通知设置新增参数
type NoticeSettingEditReq struct {
	Id       int32 `json:"id"` //
	Template struct {
		SmsNotice `json:"sms_notice"`
	} `json:"template"`
}

// SmsNotice 短信结构
type SmsNotice struct {
	IsShow     int32    `json:"is_show"`
	Status     int32    `json:"status"`
	Content    string   `json:"content"`
	TemplateId string   `json:"template_id"`
	Tips       []string `json:"tips"`
	Type       string   `json:"type"`
}

// SystemNotice 系统通知结构
type SystemNotice struct {
	Content string   `json:"content"`
	Title   string   `json:"title"`
	Status  int32    `json:"status"`
	IsShow  int32    `json:"is_show"`
	Tips    []string `json:"tips"`
	Type    string   `json:"type"`
}

// SmsSettingDetailReq 短信设置详情参数
type SmsSettingDetailReq struct {
	Name string `form:"name" binding:"required"` //
}

type SmsSettingEditReq struct {
	Name      string `json:"name" binding:"required"`
	Alias     string `json:"alias" binding:"required"`
	Sign      string `json:"sign,omitempty"`
	AppKey    string `json:"appKey,omitempty"`
	AppId     string `json:"appId,omitempty"`
	SecretKey string `json:"secretKey,omitempty"`
	SecretId  string `json:"secretId,omitempty"`
	Status    int32  `json:"status,omitempty"`
}
type StorageSettingEditReq struct {
	Name      string `json:"name" binding:"required"`
	Engine    string `json:"engine" binding:"required"`
	AccessKey string `json:"accessKey"`
	SecretKey string `json:"secretKey" `
	Bucket    string `json:"bucket" `
	Domain    string `json:"domain" `
	Region    string `json:"region" `
	Status    int32  `json:"status" `
}

// 充值配置
type RechargeSettingEditReq struct {
	Status    int32 `json:"status" binding:""`
	MinAmount int32 `json:"min_amount" binding:""`
}

// UserSetReq 设置用户默认头像
type UserSetReq struct {
	DefaultAvatar string `json:"default_avatar" binding:"required"` // 默认头像
}

type SettingLoginReq struct {
	LoginWay        []int32 `json:"loginWay" binding:"required"`
	ForceBindMobile int32   `json:"forceBindMobile" binding:""`
	OpenAgreement   int32   `json:"openAgreement" binding:""`
	OpenOtherAuth   int32   `json:"openOtherAuth" binding:""`
	AutoLoginAuth   []int32 `json:"autoLoginAuth" binding:""`
}

type PaySettingEditReq struct {
	Name        string `json:"name" binding:"required"`
	DisplayName string `json:"display_name" binding:"required"`
	Icon        string `json:"icon" binding:"required"`
	Remark      string `json:"remark"`
	Domain      string `json:"domain"`
	Sort        int32  `json:"sort"`
	Config      struct {
		ApiClientCert    string `json:"api_client_cert,omitempty"`   //微信支付配置
		ApiClientKey     string `json:"api_client_key,omitempty"`    //微信支付配置
		InterfaceVersion string `json:"interface_version,omitempty"` //微信支付配置
		MchId            string `json:"mch_id,omitempty"`            //微信支付配置
		MerchantType     string `json:"merchant_type,omitempty"`     //微信支付配置 支付宝配置 共用
		PaySignKey       string `json:"pay_sign_key,omitempty"`      //微信支付配置
		AliPublicKey     string `json:"ali_public_key,omitempty"`    //支付宝配置
		AppId            string `json:"app_id,omitempty"`            //支付宝配置
		Mode             string `json:"mode,omitempty"`              //支付宝配置
		PrivateKey       string `json:"private_key,omitempty"`       //支付宝配置
	} `json:"config,omitempty" `
}

// PaySettingDetailReq 短信设置详情参数
type PaySettingDetailReq struct {
	Name string `form:"name" binding:"required"` //
}

type PaySceneSetReq struct {
	Scene       string `json:"scene"  binding:"required"`
	IsDefault   int32  `json:"is_default"` // 1 默认
	Status      int32  `json:"status" `    // 1 开启 0 关闭
	PaymentName string `json:"payment_name" `
}

type ChannelMnpSettingReq struct {
	Name       string `json:"name"`
	OriginalId string `json:"original_id"`
	QrCode     string `json:"qr_code"`
	AppId      string `json:"app_id" binding:"required"`
	AppSecret  string `json:"app_secret" binding:"required"`
}

type ChannelOpenSettingReq struct {
	AppId     string `json:"app_id" binding:"required"`
	AppSecret string `json:"app_secret" binding:"required"`
}

type ChannelOASettingReq struct {
	Name           string `json:"name"`
	OriginalId     string `json:"original_id"`
	QrCode         string `json:"qr_code"`
	AppId          string `json:"app_id"  binding:"required"`
	AppSecret      string `json:"app_secret"  binding:"required"`
	Url            string `json:"url,omitempty"`
	Token          string `json:"token,omitempty"`
	EncodingAesKey string `json:"encoding_aes_key,omitempty"`
	EncryptionType int32  `json:"encryption_type,omitempty"`
	BusinessDomain string `json:"business_domain,omitempty"`
	JsSecureDomain string `json:"js_secure_domain,omitempty"`
	WebAuthDomain  string `json:"web_auth_domain,omitempty"`
}

type ChannelH5SettingReq struct {
	Status     int32  `json:"status"`
	PageStatus int32  `json:"page_status"`
	PageUrl    string `json:"page_url"`
}

type ChannelOaMenuReq struct {
	Appid     string             `json:"appid"`
	HasMenu   bool               `json:"has_menu"`
	Name      string             `json:"name" binding:"required"`
	PagePath  string             `json:"pagepath"`
	Type      string             `json:"type"`
	Url       string             `json:"url"`
	SubButton []ChannelOaMenuReq `json:"sub_button"`
}

// OfficialReplyListReq 公众号的回复列表参数
type OfficialReplyListReq struct {
	ReplyType int32 `form:"reply_type"` // 回复类型: [1=关注回复 2=关键字回复, 3=默认回复]
}

type OfficialReplyAddReq struct {
	Name         string `json:"name" binding:"required"`                   // 规则名
	Keyword      string `json:"keyword"`                                   // 关键词
	ReplyType    int32  `json:"reply_type" binding:"required,oneof=1 2 3"` // 回复类型: [1=关注回复 2=关键字回复, 3=默认回复]
	MatchingType int32  `json:"matching_type"`                             // 匹配方式: [1=全匹配, 2=模糊匹配]
	ContentType  int32  `json:"content_type"`                              // 内容类型: [1=文本]
	Status       int32  `json:"status"`                                    // 启动状态: [1=启动, 0=关闭]
	Content      string `json:"content" binding:"required"`                // 回复内容
	Sort         int32  `json:"sort"`                                      // 排序编号
}

// OfficialReplyDetailReq 公众号的回复详情参数
type OfficialReplyDetailReq struct {
	Id int32 `form:"id"` // 主键
}

// OfficialReplyEditReq 公众号的回复新增参数
type OfficialReplyEditReq struct {
	Id           int32  `json:"id" binding:"required"`                     // 主键
	Name         string `json:"name" binding:"required"`                   // 规则名
	Keyword      string `json:"keyword"`                                   // 关键词
	ReplyType    int32  `json:"reply_type" binding:"required,oneof=1 2 3"` // 回复类型: [1=关注回复 2=关键字回复, 3=默认回复]
	MatchingType int32  `json:"matching_type"`                             // 匹配方式: [1=全匹配, 2=模糊匹配]
	ContentType  int32  `json:"content_type"`                              // 内容类型: [1=文本]
	Status       int32  `json:"status"`                                    // 启动状态: [1=启动, 0=关闭]
	Content      string `json:"content" binding:"required"`                // 回复内容
	Sort         int32  `json:"sort"`                                      // 排序编号
}
